#include <bits/stdc++.h>
#define int long long 
using namespace std;
const int maxn = 15;
int n;
int vis[maxn][maxn]; // 不能使用 bool , 这里需要表示被几个皇后影响了
int ans;

int nx[] = {0, 0, 1, -1};
int ny[] = {1, -1, 0, 0};

void dfs(int dep){
	if (dep == n+1) {
		// 放完了
		ans++;
		return;
	}
	// 处理该位置
	for (int i=1;i<=n;i++) {
		if (vis[dep][i]) continue; // 不能放
		// 能放
		// 进行影响
		for (int j=1;j<=n;j++) vis[dep][j]++; // 行
		for (int j=1;j<=n;j++) vis[j][i]++; // 列
		for (int _i=dep, j=i;_i>=1&&j>=1;_i--, j--) vis[_i][j]++; // 左上
		for (int _i=dep, j=i;_i<=n&&j<=n;_i++, j++) vis[_i][j]++; // 右下
		for (int _i=dep, j=i;_i>=1&&j<=n;_i--, j++) vis[_i][j]++; // 右上
		for (int _i=dep, j=i;_i<=n&&j>=1;_i++, j--) vis[_i][j]++; // 左下
		// 处理下一层
		dfs(dep+1);
		// 恢复现场
		for (int j=1;j<=n;j++) vis[dep][j]--; // 行
		for (int j=1;j<=n;j++) vis[j][i]--; // 列
		for (int _i=dep, j=i;_i>=1&&j>=1;_i--, j--) vis[_i][j]--; // 左上
		for (int _i=dep, j=i;_i<=n&&j<=n;_i++, j++) vis[_i][j]--; // 右下
		for (int _i=dep, j=i;_i>=1&&j<=n;_i--, j++) vis[_i][j]--; // 右上
		for (int _i=dep, j=i;_i<=n&&j>=1;_i++, j--) vis[_i][j]--; // 左下
	}
}

void solve(){
	cin >> n;
	dfs(1);
	cout << ans << '\n';
}


signed main(){
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	solve();
	return 0;
}
